﻿using System;
using System.Data;
namespace framework
{
    /// <summary>
    /// Métodos de Excenção
    /// </summary>
    public static class ExtencoesExcel
    {
        /// <summary>
        /// Recupera o valor do campo pelo índice
        /// </summary>
        /// <typeparam name="TipoCampo">Tipagem do campo</typeparam>
        /// <param name="dados">Retorno da persistência</param>
        /// <param name="indiceCampo">Índice do campo</param>
        /// <returns>Valor do campo</returns>
        public static TipoCampo getValorCampo<TipoCampo>(this IDataRecord dados, int indiceCampo)
        {
            object _valor = dados[indiceCampo];
            return
                _valor is DBNull ?
                default(TipoCampo) :
                (TipoCampo)Convert.ChangeType(_valor, typeof(TipoCampo))
            ;
        }
        /// <summary>
        /// Recupera o valor do campo pelo nome
        /// </summary>
        /// <typeparam name="TipoCampo">Tipagem do campo</typeparam>
        /// <param name="dados">Retorno da persistência</param>
        /// <param name="nomeCampo">Nome do campo</param>
        /// <returns>Valor do campo</returns>
        public static TipoCampo getValorCampo<TipoCampo>(this IDataRecord dados, string nomeCampo)
        {
            object _valor = dados[nomeCampo];
            return
                _valor is DBNull ?
                default(TipoCampo) :
                (TipoCampo)Convert.ChangeType(_valor, typeof(TipoCampo))
            ;
        }
    }
}